﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Inventario_HardSoft.Controlador;
using Inventario_HardSoft.ADO;

namespace Inventario_HardSoft.Presentacion
{
    public partial class Asignar_Programas : Form
    {
        private Ctrl_AsigProgramas asigPrograma;
        private Ctrl_Prog controlProgramas; 
  
        public Asignar_Programas()
        {
            InitializeComponent();
            asigPrograma = new Ctrl_AsigProgramas();
            controlProgramas = new Ctrl_Prog();  
        }

        private void cmb_Equipo_DropDown(object sender, EventArgs e)
        {
            //limpiamos el combo
            cmb_Equipo.Items.Clear();
            //vas a llenar el listbox, llamar a la base de datos
            foreach (string eq in asigPrograma.listPC_Laptop()) //recorre cada elemento de label1 lista
            {
                cmb_Equipo.Items.Add(eq.ToString());
            }
        }

        private void Asignar_Programas_Load(object sender, EventArgs e)
        {
            controlProgramas.getList_Programas(grib_ProgParaAsignar);
            grib_ProgParaAsignar.ClearSelection();
        }

        private void btn_Ver_Click(object sender, EventArgs e)
        {
            grib_Equipos.Rows.Clear();
            //por usuario
            if (radioButton2.Checked)
            {
                string idUsuario = txt_Usuario.Tag.ToString();
                asigPrograma.getList_Computadoras(grib_Equipos, idUsuario);
            }

            //por equipo
            if (radioButton1.Checked)
            {
                int i = 1;
                //los equipos sin asignar y asignados 
                List<EQUIPO> equiposSinAsignar = asigPrograma.mostrarPC_Laptop(cmb_Equipo.Text.Trim(), 0);  //no asignados
                List<EQUIPO> equiposAsignado = asigPrograma.mostrarPC_Laptop(cmb_Equipo.Text.Trim(), 1);    //asignados

                foreach (EQUIPO eq1 in equiposSinAsignar)
                {
                    grib_Equipos.Rows.Add(new object[] { eq1.IDEQUIPO,i.ToString(), eq1.TIPOEQUIPO, eq1.MARCA, eq1.MODELO,eq1.SERIE});
                    i++;
                }

                foreach (EQUIPO eq2 in equiposAsignado)
                {
                    grib_Equipos.Rows.Add(new object[] { eq2.IDEQUIPO, i.ToString(), eq2.TIPOEQUIPO, eq2.MARCA, eq2.MODELO, eq2.SERIE });
                    i++;
                }
            }
            grib_Equipos.ClearSelection();
        }

        private void cmb_Equipo_SelectionChangeCommitted(object sender, EventArgs e)
        {
            btn_Ver.Focus();
        }

        private void btn_Agregar_Click(object sender, EventArgs e)
        {
            bool repetido1 = false;
            bool repetido2 = false;
                             
            if (grib_ProgParaAsignar.SelectedRows.Count > 0)
            {
                foreach (DataGridViewRow rowSelected in grib_ProgParaAsignar.SelectedRows)
                {
                    foreach (DataGridViewRow dr in grid_Prog_a_Posee.Rows)
                    {
                        if (rowSelected.Cells["idPrograma"].Value.ToString() == dr.Cells["idPro"].Value.ToString())
                        {
                            repetido1 = true;
                            break;
                        }
                        else
                        {
                            repetido1 = false;
                        }
                    }

                    if (!repetido1)
                    {
                        //verificamos que no este ya instalado
                        foreach (var item in listProgInstalados.Items)
                        {
                            if (rowSelected.Cells["program"].Value.ToString() == item.ToString())
                            {
                                repetido2 = true;
                                break;
                            }
                            else
                            {
                                repetido2 = false;
                            }
                        }

                        if (!repetido2)
                        {
                            grid_Prog_a_Posee.Rows.Add(new object[] { rowSelected.Cells["idPrograma"].Value.ToString(), rowSelected.Cells["program"].Value.ToString() }); 
                        }
                    }
                }
            }

            grid_Prog_a_Posee.ClearSelection();
        }

        private void btn_Eliminar_Click(object sender, EventArgs e)
        {
            if (grid_Prog_a_Posee.SelectedRows.Count > 0)
            {
                foreach (DataGridViewRow dr in grid_Prog_a_Posee.SelectedRows)
                {
                    grid_Prog_a_Posee.Rows.Remove(dr);
                }
            }
        }

        private void btn_asignar_Click(object sender, EventArgs e)
        {
            if (grib_Equipos.SelectedRows.Count > 0)
            {
                if (grid_Prog_a_Posee.Rows.Count > 0)
                {
                    DialogResult dr = asigPrograma.verificarEquipoxPrograma(grib_Equipos.SelectedRows[0].Cells["idequipo"].Value.ToString(),grid_Prog_a_Posee);

                    switch (dr)
                    {
                        case DialogResult.OK:
                            MessageBox.Show("Los programas fueron asignados correctamente", "Camilo", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);
                            this.Close();
                            break;
                        case DialogResult.Cancel:
                            MessageBox.Show("Ha ocurrido un error", "Camilo", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);
                            this.Close();
                            break;                                
                    }
                }
                else
                {
                    MessageBox.Show("No ha ingresado los programas", "Camilo", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
                }
            }
            else
            {
                MessageBox.Show("No ha seleccionado el equipo", "Camilo", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
            }
        }

        private void radioButton1_CheckedChanged(object sender, EventArgs e)
        {
            if (radioButton1.Checked)
            {
                cmb_Equipo.Enabled = true;
                btn_Examinar.Enabled = false;
                txt_Usuario.Text = string.Empty;
                txt_Usuario.Enabled = false;

                grib_Equipos.Rows.Clear();
                grid_Prog_a_Posee.Rows.Clear();
                grib_ProgParaAsignar.ClearSelection();
            }
            else
            {
                cmb_Equipo.Enabled = false;
                btn_Examinar.Enabled = true;
                txt_Usuario.Enabled = true;
            }
        }

        private void radioButton2_CheckedChanged(object sender, EventArgs e)
        {
            if (radioButton2.Checked)
            {
                cmb_Equipo.Enabled = false;
                btn_Examinar.Enabled = true;
                txt_Usuario.Enabled = true;

                grib_Equipos.Rows.Clear();
                grid_Prog_a_Posee.Rows.Clear();
                grib_ProgParaAsignar.ClearSelection();
            }
            else
            {
                cmb_Equipo.Enabled = true;
                btn_Examinar.Enabled = false;
                txt_Usuario.Text = string.Empty;
                txt_Usuario.Enabled = false;
            }
        }

        private void btn_Examinar_Click(object sender, EventArgs e)
        {
            Buscar_Usuario bUsuario = new Buscar_Usuario();
            DialogResult dr = bUsuario.ShowDialog(this);

            switch (dr)
            {
                case DialogResult.OK:
                    txt_Usuario.Text = bUsuario.user.NOMBRE;
                    txt_Usuario.Tag = bUsuario.user.IDUSUARIO;
                    break;
                case DialogResult.Cancel:
                    txt_Usuario.Text = string.Empty;
                    break;
            }
        }

        private void grib_Equipos_SelectionChanged(object sender, EventArgs e)
        {
            listProgInstalados.Items.Clear();
            if (grib_Equipos.SelectedRows.Count > 0)
            {
                asigPrograma.getList_EquipoxPrograma(listProgInstalados,grib_Equipos.SelectedRows[0].Cells["idequipo"].Value.ToString());
            }
        }
 
    }
}
       